Linux下安装 tpacpi-bat 控制 thinkpad 充电阈值

tp_smapi 是一套适用于ThinkPad的驱动程序集, 包括了电池阈值设置, 风扇转速控制, 以及HDAPS(类似APS硬盘保护)几个功能. 但是 2013新出的几款Ivy Bridge 平台的thinkpad(X230,T430,T530)上已经无法使用tp_smapi了. 在github上可以看到tp_smapi 项目也有两年多没有更新: tp_smapi地址

所以对于T430等Ivy平台的Thinkpad, 推荐使用tpacpi-bat调整电池充电阈值.

安装过程:

(1) 安装acpidump , iasl工具

sudo yum install pmtools iasl

(2) acpidump

sudo acpidump -b -t DSDT -o /tmp/dsdt.aml
可能会返回Wrong checksum for FADT!错误, 忽略.
iasl -d /tmp/dsdt.aml
cat /tmp/dsdt.dsl | grep \\_SB.PCI.*HKEY -amlo | uniq
记住输出的字符串, 我的T430输出是”_SB.PCI0.LPC.EC.HKEY”

(3) 编译acpi_call

下载代码并编译: https://github.com/mkottman/acpi_call

sudo make
sudo make install
sudo depmod -a
sudo modprobe acpi_call

最后一步载入acpi_call.ko之后,会多出一个 /proc/acpi/call “文件”, 通过写入参数到这个文件, 实现与acpi_call的交互.tpacpi-bat就是通过这种方式控制电池阈值. 当然也可以通过acpi_call控制独立显卡的关闭(双显卡的机型).

(4) 安装tpacpi_call

下载代码并编译: https://github.com/teleshoes/tpacpi-bat
需要手动编辑一下 vim tpacpi-bat
找到 “my $aslBases = …” 并改为自己的配置, 例如我的T430改为:

my $aslBases = {
'default' => '\_SB.PCI0.LPC.EC.HKEY',
'ThinkPad W520' => '\_SB.PCI0.LPC.EC.HKEY',
'ThinkPad T430' => '\_SB.PCI0.LPC.EC.HKEY',
'ThinkPad T430u' => '\_SB.PCI0.LPCB.EC.HKEY',
};

然后把tpacpi-bat 移动到/usr/local/bin .

(5) 增加到开机脚本中

编辑/etc/rc.local, 增加两行:

/usr/local/bin/tpacpi-bat -s ST 0 70
/usr/local/bin/tpacpi-bat -s SP 0 90

上面两行分别将开始充电停止充电设置为70%和90%.

(6) 查询充电阈值

tpacpi-bat -v -g ST 1
tpacpi-bat -v -g SP 1

参考:
http://ubuntuforums.org/showthread.php?t=2148044
http://smitran.com/centos-6-thinkpad-t530-prolong-battery-life-with-tpacpi-bat/
http://blog.thekondor.net/2012/09/make-new-thinkpads-charge-thresholds.html